布尔量
一个布尔量,bool
,可以具有两个值 true
或 false
之一。布尔量用于表示逻辑运算的结果。
例如,
void f(int a, int b)
{
bool b1 = a == b; // =是赋值,==是相等判断
// ...
}
如果 a
和 b
具有相同的值,b1
将变成 true
;否则 b1
将变成 false
。
bool
最常见的使用是作为检查某些条件是否成立的函数(谓词)的结果类型。例如,
bool is_open(File*);
bool greater(int a, int b) { return a > b; }
按照定义,true
具有值 1
,而 false
具有值 0
。与此相对应,整数可以隐式地转换到 bool
值:非零的整数转换为 true
,而 0
转换为 false
。例如,
bool b = 7; // bool(7)是true,所以b变成true
int i = true; // int(true)是1,所以i变成1
在算术和逻辑表达式里,bool
都将被转为 int
,在这种转换之后得到的值上进行各种算术和逻辑运算。如果结果又被转回 bool
,那么 0
将转为 false
,所有非零值都转为 true
。
void g()
{
bool a = true;
bool b = true;
bool x = a + b; // a + b是2,所以x变成true
bool y = a | b; // a | b是1,所以y变成true
}
指针也可以隐式地转换到 bool
(C.6.2.5节),非零指针转为 true
,具有零值的指针转为 false
。
🔚